package com.wxh.producerconsumer;

/**
 * @ClassName: ProducerConsumerTest
 * @Description: 生成者消费者模式
 * @Author wxh
 * @Date: 2021/12/7 9:50
 * @Version V1.0.0
 * @Since 1.8
 */
public class ProducerConsumerTest {

    public static void main(String[] args) {
        /**
         * 1. 生产者和消费者模式：
         * 是通过一个容器来解决生产者和消费者的强耦合问题。
         * 生产者和消费者彼此并不直接通信，而是通过阻塞队列进行通信，
         * 所以生产者生产完数据后不用等待消费者进行处理，而是直接扔给阻塞队列，
         * 消费者不找生产者要数据，而是直接从阻塞队列中获取数据，
         * 阻塞队列就相当于一个缓冲区，平衡生产者和消费者的处理能力
         * 2. 存在问题：
         * 2.1 当生产者比消费者快时，消费者会漏掉一部分数据；
         * 2.2 当消费者比生产者快时，消费者会取走相同的数据。
         * 3. 解决方法
         * 3.1 同步代码块
         * 3.2 同步方法
         * 3.3 lock锁机制， 通过创建Lock对象，采用lock()加锁，unlock()解锁，来保护指定的代码块
         */
    }
}
